Color 16 Click
Color 16 Click demo application is developed using the NECTO Studio, ensuring compatibility with mikroSDK's open-source libraries and tools. Designed for plug-and-play implementation and testing, the demo is fully compatible with all development, starter, and mikromedia boards featuring a mikroBUS™ socket.
Click Library
- Author : Stefan Filipovic
- Date : Oct 2022.
- Type : I2C type
Software Support
Example Description
This example demonstrates the use of Color 16 Click by reading and displaying the values from all 14 channels.
Example Libraries
- MikroSDK.Board
- MikroSDK.Log
- Click.Color16
Example Key Functions
- color16_cfg_setup Config Object Initialization function.
void color16_cfg_setup(color16_cfg_t *cfg)
Color 16 configuration object setup function.
Color 16 Click configuration object.
Definition color16.h:375
- color16_init Initialization function.
err_t color16_init(color16_t *ctx, color16_cfg_t *cfg)
Color 16 initialization function.
Color 16 Click context object.
Definition color16.h:354
- color16_default_cfg Click Default Configuration function.
err_t color16_default_cfg(color16_t *ctx)
Color 16 default configuration function.
- color16_read_data This function checks if the spectral measurement data is ready and then reads data from all channels along with the STATUS and ASTATUS bytes.
err_t color16_read_data(color16_t *ctx, color16_data_t *data_out)
Color 16 read data function.
Color 16 Click data object.
Definition color16.h:325
- color16_set_wait_time_ms This function sets the wait time in milliseconds by setting the WTIME register.
err_t color16_set_wait_time_ms(color16_t *ctx, float wait_time_ms)
Color 16 set wait time ms function.
- color16_set_integration_time_ms This function sets the integration time in milliseconds by setting the ATIME and ASTEP registers.
err_t color16_set_integration_time_ms(color16_t *ctx, float int_time_ms)
Color 16 set integration time ms function.
Application Init
Initializes the driver and performs the Click default configuration.
{
log_cfg_t log_cfg;
LOG_MAP_USB_UART( log_cfg );
#ifdef INTERFACE_LOGGER_UART
log_cfg.is_interrupt = false;
#endif
log_init( &logger, &log_cfg );
log_info( &logger, " Application Init " );
if ( I2C_MASTER_ERROR ==
color16_init( &color16, &color16_cfg ) )
{
log_error( &logger, " Communication init." );
for ( ; ; );
}
{
log_error( &logger, " Default configuration." );
for ( ; ; );
}
log_info( &logger, " Application Task " );
}
@ COLOR16_ERROR
Definition color16.h:395
#define COLOR16_MAP_MIKROBUS(cfg, mikrobus)
MikroBUS pin mapping.
Definition color16.h:310
void application_init(void)
Definition main.c:33
#define MIKROBUS_POSITION_COLOR16
Definition main.c:27
Application Task
Waits for the spectral measurement complete flag and then reads data from all 14 channels in 3 cycles, and displays the results on the USB UART every 300ms approximately.
{
{
log_printf ( &logger,
" STATUS: 0x%.2X\r\n", ( uint16_t ) color_data.
status );
log_printf ( &logger,
" ASTATUS: 0x%.2X\r\n", ( uint16_t ) color_data.
astatus );
log_printf ( &logger, " ------- Cycle 1 -------\r\n" );
log_printf ( &logger,
" Channel FZ: %u\r\n", color_data.
ch_fz );
log_printf ( &logger,
" Channel FY: %u\r\n", color_data.
ch_fy );
log_printf ( &logger,
" Channel FXL: %u\r\n", color_data.
ch_fxl );
log_printf ( &logger,
" Channel NIR: %u\r\n", color_data.
ch_nir );
log_printf ( &logger,
" Channel 2xVIS_1: %u\r\n", color_data.
ch_2x_vis_1 );
log_printf ( &logger,
" Channel FD_1: %u\r\n", color_data.
ch_fd_1 );
log_printf ( &logger, " ------- Cycle 2 -------\r\n" );
log_printf ( &logger,
" Channel F2: %u\r\n", color_data.
ch_f2 );
log_printf ( &logger,
" Channel F3: %u\r\n", color_data.
ch_f3 );
log_printf ( &logger,
" Channel F4: %u\r\n", color_data.
ch_f4 );
log_printf ( &logger,
" Channel F6: %u\r\n", color_data.
ch_f6 );
log_printf ( &logger,
" Channel 2xVIS_2: %u\r\n", color_data.
ch_2x_vis_2 );
log_printf ( &logger,
" Channel FD_2: %u\r\n", color_data.
ch_fd_2 );
log_printf ( &logger, " ------- Cycle 3 -------\r\n" );
log_printf ( &logger,
" Channel F1: %u\r\n", color_data.
ch_f1 );
log_printf ( &logger,
" Channel F5: %u\r\n", color_data.
ch_f5 );
log_printf ( &logger,
" Channel F7: %u\r\n", color_data.
ch_f7 );
log_printf ( &logger,
" Channel F8: %u\r\n", color_data.
ch_f8 );
log_printf ( &logger,
" Channel 2xVIS_3: %u\r\n", color_data.
ch_2x_vis_3 );
log_printf ( &logger,
" Channel FD_3: %u\r\n", color_data.
ch_fd_3 );
log_printf ( &logger, " -----------------------\r\n\n" );
Delay_ms ( 300 );
}
}
@ COLOR16_OK
Definition color16.h:394
void application_task(void)
Definition main.c:72
uint16_t ch_f4
Definition color16.h:336
uint8_t astatus
Definition color16.h:327
uint16_t ch_fz
Definition color16.h:328
uint16_t ch_2x_vis_3
Definition color16.h:344
uint16_t ch_fd_2
Definition color16.h:339
uint16_t ch_f6
Definition color16.h:337
uint16_t ch_2x_vis_2
Definition color16.h:338
uint16_t ch_fd_1
Definition color16.h:333
uint16_t ch_f2
Definition color16.h:334
uint16_t ch_f3
Definition color16.h:335
uint16_t ch_fxl
Definition color16.h:330
uint16_t ch_fd_3
Definition color16.h:345
uint16_t ch_fy
Definition color16.h:329
uint16_t ch_2x_vis_1
Definition color16.h:332
uint16_t ch_nir
Definition color16.h:331
uint16_t ch_f1
Definition color16.h:340
uint16_t ch_f8
Definition color16.h:343
uint16_t ch_f7
Definition color16.h:342
uint8_t status
Definition color16.h:326
uint16_t ch_f5
Definition color16.h:341
Application Output
This Click board can be interfaced and monitored in two ways:
- Application Output - Use the "Application Output" window in Debug mode for real-time data monitoring. Set it up properly by following this tutorial.
- UART Terminal - Monitor data via the UART Terminal using a USB to UART converter. For detailed instructions, check out this tutorial.
Additional Notes and Information
The complete application code and a ready-to-use project are available through the NECTO Studio Package Manager for direct installation in the NECTO Studio. The application code can also be found on the MIKROE GitHub account.